/**********************************
        STSET
Pas (timing) SSB variabelen aan

Create: t0_mig, t_mig, d_mig
      t0_werk, t_werk, d_werk
      t0_Gwerk, t_Gwerk, d_Gwerk
      indwerk, indGwerk

NB  piecewise constant intervals in EXTERNAL globals:
   pcmaxmos_mig, pcstart_mig, pcstep_mig
   pcmaxmos_werk, pcstart_werk, pcstep_werk
   pcmaxmos_Gwerk, pcstart_Gwerk, pcstep_Gwerk

Create: intmig_*, intwerk_*, intGwerk_*

***********************************/

*** NB Run first Adjust_3mos.do, MAK_PREVIOUS_VAR.do and tellers.do!!

gen byte eerste_immi = (numemi==0)|(numemi==1&(eventMig==2|eventMig==3))

gen int datum_1eimmi =0
replace datum_1eimmi = datum if eerste_immi
by rin: replace datum_1eimmi=datum_1eimmi[1]
format datum_1eimmi %d

replace eventWerk = -9 if eventWerk==.
replace eventGWerk = -9 if eventGWerk==.
replace eventMig = -9 if eventMig==.

stset datum, fail(eventMig==2 3) origin(time datum_1eimmi) id(rin) ///
    scale(30.4375) exit(time .) enter(eventMig==0 1) 

stsplit migsplit, at ($pcstart_mig($pcstep_mig)$pcmaxmos_mig) nopreserve
local kmax = trunc($pcmaxmos_mig)/$pcstep_mig
forvalues k=2/`kmax' {
  gen byte intmig_`k' = ( (`k'-1)*$pcstep_mig <= migsplit) & ///
                           (migsplit < `k'*$pcstep_mig)
}
local kk = `kmax'+1
gen byte intmig_`kk'= (migsplit >= $pcmaxmos_mig) & (migsplit < .)
drop migsplit

replace eventWerk = -9 if eventMig==.
replace eventGWerk = -9 if eventMig==.
replace eventMig = -9 if eventMig==.

sort rin datum, stable
***** Employment to unemployment ****
gen double tmpidWerk = 100*rin+numwerk
stset datum, fail(eventWerk==3) origin(eventWerk==1) id(tmpidWerk) ///
    scale(30.4375) exit(eventWerk==2 3 time .) 

stsplit werksplit, at ($pcstart_werk($pcstep_werk)$pcmaxmos_werk) nopreserve
local kmax = trunc($pcmaxmos_werk)/$pcstep_werk
forvalues k=2/`kmax' {
  gen byte intwerk_`k' = ( (`k'-1)*$pcstep_werk <= werksplit) & ///
                           (werksplit < `k'*$pcstep_werk)
}
local kk = `kmax'+1
gen byte intwerk_`kk'= (werksplit >= $pcmaxmos_werk) & (werksplit < .)
drop werksplit

replace eventGWerk = -9 if eventWerk==.
replace eventMig = -9 if eventWerk==.
replace eventWerk = -9 if eventWerk==.

sort rin datum, stable
***** Unemploymet to employment ****
gen double tmpidGWerk = 100*rin+numGwerk
stset datum, fail(eventGWerk==3) origin(eventGWerk==1) id(tmpidGWerk) ///
    scale(30.4375) exit(eventGWerk==2 3 time .) 
* stdes

stsplit Gwerksplit, at ($pcstart_Gwerk($pcstep_Gwerk)$pcmaxmos_Gwerk) ///
                      nopreserve
local kmax = trunc($pcmaxmos_Gwerk)/$pcstep_Gwerk
forvalues k=2/`kmax' {
  gen byte intGwerk_`k' = ( (`k'-1)*$pcstep_Gwerk <= Gwerksplit) & ///
                           (Gwerksplit < `k'*$pcstep_Gwerk)
}
local kk = `kmax'+1
gen byte intGwerk_`kk'= (Gwerksplit >= $pcmaxmos_Gwerk) & (Gwerksplit < .)
drop Gwerksplit

replace eventMig = -9 if eventGWerk==.
replace eventWerk = -9 if eventGWerk==.
replace eventGWerk = -9 if eventGWerk==.

**** Create time-variables ***
sort rin datum, stable
  /* Geen werk */
gen t0_Gwerk = _t0
replace t0_Gwerk = 0 if t0_Gwerk==.
gen t_Gwerk = _t
replace t_Gwerk = 0 if t_Gwerk==.
gen byte d_Gwerk = 0
replace d_Gwerk = _d if _d !=.

  /* werk */
stset datum, fail(eventWerk==3) origin(eventWerk==1) id(tmpidWerk) ///
    scale(30.4375) exit(eventWerk==2 3 time .) 
gen t0_werk = _t0
replace t0_werk = 0 if t0_werk==.
gen t_werk = _t
replace t_werk = 0 if t_werk==.
gen byte d_werk = 0
replace d_werk = _d if _d !=.
sort rin datum, stable

  /* Migratie */
stset datum, fail(eventMig==2 3 5 7) origin(time datum_1eimmi) id(tmpid) ///
    scale(30.4375) exit(time .) enter(eventMig==0 1 4) 
gen t0_mig = _t0
gen t_mig = _t
gen byte d_mig = _d

*** (Previous) state indicators ***
gen byte indGwerk = (t_Gwerk > 0)  /* voor gam2 */
gen byte indwerk = (t_werk > 0)*(numwerk > 1)

drop tmpid tmpidWerk tmpidGWerk
